/**
 * 
 */
package STUDENTS.PHAMHONGSON.Eg07142016;

import java.util.Scanner;
/**
 * @author WindChime
 *
 */
public class Runner {

	public static void main(String[] args)
	{	
		LogObj LogObj = new LogObj();
		String strGoingOn = "";
		Scanner scc = new Scanner(System.in);
		int timesOfTrying = 0;
		do
		{
			String strTemp = "";
			String strAct = "";
			do 
			{	//Mời nhập UserName
				System.out.println("Mời nhập UserName?");
				strTemp = scc.nextLine();				
			} 
			while (strTemp.isEmpty());
				LogObj.setUserName(strTemp);
		
			do 
			{	//Mời nhập UserPass
				System.out.println("Mời nhập Password?");
				strTemp = scc.nextLine();
			} 
			while (strTemp.isEmpty());
				LogObj.setUserPass(strTemp);
		
			
			LogController logController = new LogController();
		
			if (LogObj.getUserName().equals("admin") && LogObj.getUserPass().equals("nothing"))
				{	
					//Hiển thị đăng nhập thành công
					LogObj.setLogInfo(1);
					System.out.println(logController.RunnerOfLogger(LogObj));
					
					int nextAct = 0;
					//chon thực hiện tính năng tiếp theo 
					do{
						do
						{
							System.out.println("Mời bạn chọn tính năng tiếp theo:");
							System.out.println("1 - Tính toán với hai số a và b.");
							System.out.println("\t\t\t\t2 - Chuyển đổi đơn vị khối lượng Kilograms - Pound.\n");
							System.out.println("3 - Tính số ngày trong tháng.");
							System.out.println("\t\t\t\t4 - Đăng ký thông tin kết bạn.\n");
							System.out.println("5 - Tính số các số chẵn/ lẻ trong khoảng từ 0 đến một số nguyên dương cho trước.");
							strAct = scc.nextLine();	
						}	
						while 
							(strAct.isEmpty() || Integer.parseInt(strAct) <1 || Integer.parseInt(strAct) > 5);
							 nextAct = Integer.parseInt(strAct);
							
							switch (nextAct)
							{
/*Bài tập 2 - Calculator*/		case 1: 
								CalculatorObj CalObj = new CalculatorObj();
									do{	
										do {
											System.out.println("Mời nhập vào số a? ");
											strTemp = scc.nextLine();
											}	
										while (strTemp.isEmpty());
											CalObj.setdNumA(Double.parseDouble(strTemp));

									
										do {
											System.out.println("Mời nhập vào số b? ");
											strTemp = scc.nextLine();
											} 
										while (strTemp.isEmpty());
											CalObj.setdNumB(Double.parseDouble(strTemp)) ;

								// 4. Mời chọn phép tính toán: 0 - Cộng; 1 - Trừ; 2 - Nhân; 3 - Chia?
										do {
											System.out.println("Mời chọn: 0 - Cộng; 1 - Trừ; 2 - Nhân; 3 - Chia?");
											strTemp = scc.nextLine();
											} 
										while 
											(strTemp.isEmpty() 	|| Integer.parseInt(strTemp) < 0 
																	|| Integer.parseInt(strTemp) > 3);
									
											CalObj.setbOpt(Byte.parseByte(strTemp));

								// 5. Kiểm tra & tính toán theo sự lựa chọn của người dùng
										ActControllers actController = new ActControllers();
										if(CalObj.getbOpt() == 3)
										{
											if (CalObj.getdNumB() == 0)
												System.out.println("Can't do this math");
											else System.out.println("Result = " + actController.ExecOf_Calculator(CalObj));	
										}
										else System.out.println("Result = "+ actController.ExecOf_Calculator(CalObj));							
								
									System.out.println("\n\tDo you wanna try again? Anykey/N");
									strGoingOn = scc.nextLine();
								}
									
								while (!strGoingOn.toUpperCase().equals("N")==true);
								break;
// Kết thúc bài 2
								
/*Bài tập 3*/				case 2:	
							ThingsOrObjects thingsOrObjects = new ThingsOrObjects();
							do
							{
									double wTemp = 0;
									
								do
								{//Mời nhập vào cân nặng cần chuyển đổi
									System.out.println("Mời bạn nhập cân nặng cần chuyển đổi:");
									strTemp = scc.nextLine();
								}
								while(strTemp.isEmpty());
									wTemp = Double.parseDouble(strTemp);
								do
								{//Mời chọn đơn vị
									System.out.println("Đó là kilo hay pound vậy?");
									System.out.println("1 - Kilograms\n" + "2 - Pound");
									strTemp = scc.nextLine();
								}
								while	
									(strTemp.isEmpty()	||Integer.parseInt(strTemp)<1
														||Integer.parseInt(strTemp)>2);
							//Xử lý và trả về kết quả
								ActControllers actControllers = new ActControllers();
								if (Integer.parseInt(strTemp)==1)
								{
									thingsOrObjects.setwInKilo(wTemp);
									thingsOrObjects.setwOpt(2);
								}
								else
								{
									thingsOrObjects.setwInPound(wTemp);
									thingsOrObjects.setwOpt(1);
								}
								String outPut = "";
								outPut = actControllers.WeightConverter(thingsOrObjects);
								System.out.println(outPut);
								System.out.println("\n\tDo you wanna try again? Anykey/N");
								strGoingOn = scc.nextLine();
							}
							while (!strGoingOn.toUpperCase().equals("N")==true);
							break;
//Kết thúc bài 3
							
/*Bài tập 4*/							
							case 3:
								CalHowManyDays calHowManyDays = new CalHowManyDays();
								do
								{
									do
									{//Mời nhập vào năm
										System.out.println("Mời nhập vào năm cần tính:");
										strTemp = scc.nextLine();
									}
									while (strTemp.isEmpty());
									calHowManyDays.setyNeedToKnown(Integer.parseInt(strTemp));
									
									do 
									{//Mời nhập vào tháng
										System.out.println("Mời nhập vào tháng cần kiểm tra:");
										strTemp = scc.nextLine();
									}
									while (strTemp.isEmpty());
									calHowManyDays.setmNeedToKnown(Integer.parseInt(strTemp));
									
								//Xử lý và đưa ra kết quả	
									ActControllers actControllers = new ActControllers();
									String outPut = "";
									outPut = actControllers.HowManyDays(calHowManyDays);
									System.out.println(outPut);
									System.out.println("\n\tDo you wanna try again? Anykey/N");
									strGoingOn = scc.nextLine();	
								}
								while (!strGoingOn.toUpperCase().equals("N")==true);
								break;
//Kết thúc bài 4
								
/*Bài tập 5*/								
							case 4:
								PersonalInfo personalInfo = new PersonalInfo();
								do
								{
									do
									{//Mời nhập tên
										System.out.println("Mời nhập vào tên của bạn:");
										strTemp = scc.nextLine();
									}
									while (strTemp.isEmpty());
									personalInfo.setpFullName(strTemp);
									
									do
									{//Mời nhập tuổi
										System.out.println("Mời nhập vào tuổi của bạn:");
										strTemp = scc.nextLine();
									}
									while (strTemp.isEmpty());
									personalInfo.setpAge(Integer.parseInt(strTemp));
									
									do
									{//Yêu cầu chọn giới tính male or female cho tới khi đáp ứng
										System.out.println("Giới tính của bạn?\n Male or Female");
										strTemp = scc.nextLine();
									}
									while (strTemp.isEmpty() || (!strTemp.toUpperCase().equals("MALE")&&
																 !strTemp.toUpperCase().equals("FEMALE")));
									personalInfo.setpSex(strTemp);
									
									do
									{//Yêu cầu chọn tình trạng hôn nhân cho tới khi đáp ứng
										System.out.println("Tình trạng hôn nhân của bạn?\n Single? \n Married? \n Divorced?");
										strTemp = scc.nextLine();
									}
									while (strTemp.isEmpty()||	(!strTemp.toUpperCase().equals("SINGLE")&&
																 !strTemp.toUpperCase().equals("MARRIED")&&
																 !strTemp.toUpperCase().equals("DIVORCE")));
									personalInfo.setpMaritalStatus(strTemp);
									
									ActControllers actControllers = new ActControllers();
									String outPut = "";
									outPut = actControllers.isFriendshipAvailble(personalInfo);
									System.out.println(outPut);
									System.out.println("\n\tDo you wanna try again? Anykey/N");
									strGoingOn = scc.nextLine();	
								}
								while (!strGoingOn.toUpperCase().equals("N")==true);
								break;
//Kết thúc bài 5
								
/*Bài tập 6*/								
							case 5:
								EvenOrOdd evenOrOdd = new EvenOrOdd();
								do
								{
									do
									{//Mời nhập vào giới hạn trên cần kiểm tra
										System.out.println("Mời nhập vào giới hạn cần tính toán");
										strTemp = scc.nextLine();
									}
									while (strTemp.isEmpty() || Integer.parseInt(strTemp)==0);
									evenOrOdd.setIntNumb(Integer.parseInt(strTemp));
									
									do
									{//Mời chọn phương thức lọc cho tới khi được đáp ứng
										System.out.println("Bạn muốn tính số các số chẵn hay lẻ?\n Even or Odd");
										strTemp = scc.nextLine();
									}
									while (strTemp.isEmpty() || (!strTemp.toUpperCase().equals("EVEN")
															 &&	!strTemp.toUpperCase().equals("ODD")));
									
									if (strTemp.toUpperCase().equals("EVEN"))
											//Lọc số chẵn
											evenOrOdd.setEvenOrOdd(true);
									else 	//Lọc số lẻ
											evenOrOdd.setEvenOrOdd(false);
								// Xử lý và đưa ra kết quả		
									ActControllers actControllers = new ActControllers();
									String outPut = "";
									outPut = actControllers.CalEvenOrOdd(evenOrOdd);
									System.out.println(outPut);
									System.out.println("\n\tDo you wanna try again? Anykey/N");
									strGoingOn = scc.nextLine();
								}
								while (!strGoingOn.toUpperCase().equals("N")==true);
								break;
/*Kết thúc bài 6*/								
						}
					// Continue to test another module?	
						System.out.println("\n\tDo you wanna try another fucntion? Anykey/N");
						strGoingOn = scc.nextLine();
						}
					
					while (!strGoingOn.toUpperCase().equals("N")==true);
					scc.close();break;					
				}
			//Keep try to loging in or quit?
			else if (timesOfTrying<2)
				{System.out.println("\n\tDo you wanna try again? Anykey/N");
				strGoingOn = scc.nextLine();
				timesOfTrying++;
				}
			else {
				System.out.printf("\n\t\t\tSorry, You've tried 3 times.");
				break;
			}
		}
		while (!strGoingOn.toUpperCase().equals("N")==true);
		scc.close();
		System.out.println("\n\t\tGoodbye!!!\n" + "\t\t\tThanks\n\t" + "\t\t\tfor\n\t\t" + "\t\t\tyours\n\t\t\t" + "\t\t\ttesting");
		System.out.println("👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍\n\n");
/*		 System.out.println("┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌┌┌┌█████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌┌┌███████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌┌███┌┌┌██┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌┌██┌┌┌┌██┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌███┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌███┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌┌██┌┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌┌███┌┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌┌┌███┌┌┌┌┌████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌┌┌┌██┌┌┌┌┌┌████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌┌┌┌███┌┌┌┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌┌┌┌┌███┌┌┌┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌┌┌┌┌███┌┌┌┌┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌┌┌┌┌┌██┌┌┌┌┌┌┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌┌███┌███┌┌┌┌┌┌┌┌┌┌██┌┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌████████████┌┌┌┌┌┌┌┌┌┌┌███┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌████████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌███┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌███┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌█████████┌┌");
		 System.out.println("███┌┌┌┌█████████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌█████┌");
		 System.out.println("██┌┌┌███████┌████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌███┌");
		 System.out.println("██┌┌┌┌███┌┌┌┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌██┌");
		 System.out.println("███┌┌┌┌┌┌┌┌┌┌┌█████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌██┌");
		 System.out.println("┌███┌┌┌┌┌┌┌████████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌██┌");
		 System.out.println("┌┌████████████┌┌┌████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌██┌");
		 System.out.println("┌███┌██████┌┌┌┌┌┌┌████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌██┌");
		 System.out.println("┌███┌┌┌┌┌┌┌┌┌┌┌██████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌██┌");
		 System.out.println("┌┌████┌████┌██████████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌██┌");
		 System.out.println("┌┌┌████████████┌┌┌┌┌███┌┌┌┌┌┌┌┌┌┌┌┌┌███┌");
		 System.out.println("┌┌┌┌██┌┌┌┌┌┌┌┌┌┌┌███████┌┌┌┌┌┌┌███████┌┌");
		 System.out.println("┌┌┌┌████┌┌┌┌┌┌████████┌┌┌┌┌┌┌┌████████┌┌");
		 System.out.println("┌┌┌┌┌████████████┌┌┌███┌┌┌┌┌███┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌███┌█┌█┌┌┌┌┌┌███┌┌┌███┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌███┌┌┌┌┌┌█████┌┌█████┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌┌██████████████████┌┌┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌┌┌██████████████┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
		 System.out.println("┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌");
*/
		
	}
}
